package com.slz3.business.module.goodsManagement.baseGoods.domain;

import com.slz3.business.frame.enums.AuditFlag;
import com.slz3.business.frame.enums.UsingFlag;
import com.slz3.business.frame.functions.Add;
import com.slz3.business.frame.functions.Modify;
import com.slz3.business.frame.module.DomainEntity;
import com.slz3.business.module.goodsManagement.gooGoods.enums.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import org.hibernate.validator.constraints.Length;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.UUID;

import static javax.persistence.EnumType.STRING;

@MappedSuperclass
@Data
@EqualsAndHashCode(callSuper = false)
public class BaseGoodsEntity extends DomainEntity {

    /**
     * 编号
     */
    @Column(length = 80)
    @NotNull(message = "serNum 必须非空!", groups = {Add.class, Modify.class})
    @Length(min = 1, max = 80, message = "ser2 必须非空并且不超过 80 个字符!", groups = {Add.class, Modify.class})
    private String serNum;

    /**
     * 备注
     */
    @Basic(fetch = FetchType.LAZY)
    @Type(type = "text")
    private String serMemo;

    /**
     * 审核状态
     */
    @Enumerated(STRING)
    //@NotNull(message = "serAudit 必须非空!", groups = {Add.class, Modify.class})
    private AuditFlag serAudit;

    /**
     * 启用状态
     */
    @Enumerated(STRING)
    //@NotNull(message = "serUsing 必须非空!", groups = {Add.class, Modify.class})
    private UsingFlag serUsing;

    /**
     * 标签
     */
    private String serLabels;


    /**
     * 品牌
     * `tzw_item_brand` int(11) DEFAULT '0' COMMENT '品牌',
     */
    private UUID serGoodsBarndId;
    /**
     * 商品名称
     * `tzw_item_name` varchar(100) DEFAULT NULL COMMENT '商品名称',
     */
    private String serGoodsName;

    /**
     * 上架状态
     * `tzw_item_status` int(11) DEFAULT NULL COMMENT '状态 2上架 1未上架',
     */
    @Enumerated(STRING)
    private GooGoodsShelvesFlag serShelfState;

    /**
     * 商品瀑布流图
     * `tzw_item_p1` varchar(500) DEFAULT NULL COMMENT '商品瀑布流图',
     */
    private String serGoodsP1;

    /**
     * 描述
     * `tzw_item_desc` longtext COMMENT '描述',
     */
    @Basic(fetch = FetchType.LAZY)
    @Column(columnDefinition = "TEXT")
    private String serGoodsDeac;
    //公共属性       `tzw_item_create_date` varchar(100) DEFAULT NULL COMMENT '创建时间',
    //公共属性       `tzw_item_update_date` varchar(100) DEFAULT NULL COMMENT '修改时间',
    /**
     * 积分 是否送积分
     * 1送
     * 2不送
     * `tzw_item_jifen` int(11) DEFAULT '2' COMMENT '积分 是否送积分 1送  2不送',
     */
    @Enumerated(STRING)
    private SendIntegralEnum serGoodsJifen;

    /**
     * 赠送积分值
     */
    private Integer serGoodsJifenVal;

    /**
     * 商品标签id
     * `tzw_item_tag_id` varchar(100) DEFAULT NULL COMMENT '商品标签id',
     */
    private String serGoodsTagId;
    //公共属性       `tzw_item_id` bigint(20) NOT NULL AUTO_INCREMENT,
    /**
     * 一级分类
     * `tzw_item_t1` bigint(11) DEFAULT NULL COMMENT '一级分类',
     */
    private UUID serGoodsT1;
    /**
     * 长图
     * `tzw_item_p3` varchar(1000) DEFAULT NULL COMMENT '长图',
     */
    private String serGoodsP3;
    /**
     * 搜索展示图片/宫格图
     * `tzw_item_p2` varchar(500) DEFAULT NULL COMMENT '搜索展示图片/宫格图',
     */
    private String serGoodsP2;
    /**
     * 二级分类
     * tzw_item_t2` bigint(20) DEFAULT NULL COMMENT '二级分类',
     */
    private UUID serGoodsT2;

    /**
     * 是否是积分商品
     * 1是
     * 2不是
     * tzw_item_isactive` int(11) DEFAULT NULL COMMENT '是否是积分商品 2不是 1是',
     */
    @Enumerated(STRING)
    private GoodsIsactiveEnum serGoodsIsactive;

    /**
     * 计量单位
     * `tzw_item_danwei` varchar(200) DEFAULT NULL COMMENT '计量单位'
     */
    private String serGoodsUtil;

    /**
     * 首页商品图片下的文字内容
     * tzw_item_content` longtext COMMENT '首页商品图片下的文字内容',
     */
    private String serGoodsContent;
    /**
     * 兑换所需积分
     * `tzw_item_jifen_num` int(20) DEFAULT '0' COMMENT '兑换所需积分',
     */
    private Integer serGoodsJifenNum;

    /**
     * 0不是  1是'
     * `tzw_item_show` int(11) DEFAULT NULL COMMENT '0不是  1是',
     */
    @Enumerated(STRING)
    private GoodsShowEnum serGoodsShow;
    /**
     * 专区
     * `tzw_item_type` int(11) DEFAULT NULL COMMENT '专区',
     */
    private Integer serGoodsType;
    /**
     * 是否是最新单品 0是 1不是
     * `tzw_item_new` int(11) DEFAULT NULL COMMENT '是否是最新单品 0是 1不是',
     */
    @Enumerated(STRING)
    private GoodsNewEnum serGoodsNew;

    /**
     * 打折
     * `tzw_item_dazhe` decimal(10,1) DEFAULT NULL COMMENT '打折',
     */
    private Integer serGoodsDazhe;

    /**
     * 轮播图
     * `tzw_item_banner` longtext COMMENT '轮播图',
     */
    @Basic(fetch = FetchType.LAZY)
    @Column(columnDefinition = "TEXT")
    private String serGoodsBanner;

    /**
     * 小程序多图
     * `tzw_item_banner` longtext COMMENT '小程序多图',
     */
    @Basic(fetch = FetchType.LAZY)
    @Column(columnDefinition = "TEXT")
    private String serSmallRoutinMultieImgs;
}
